package com.maiko.usercenter.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.maiko.usercenter.model.dto.UserAccountLoginRequest;
import com.maiko.usercenter.model.dto.UserAccountRegisterRequest;
import com.maiko.usercenter.model.dto.UserPageQueryRequest;
import com.maiko.usercenter.model.entity.User;
import com.maiko.usercenter.model.vo.LoginUserVO;
import jakarta.servlet.http.HttpServletRequest;

/**
* @author 73450
* @description 针对表【user(用户表)】的数据库操作Service
* @createDate 2025-07-12 15:26:09
*/
public interface UserService extends IService<User> {

    /**
     * 用户注册
     *
     * @param userAccountRegisterRequest 用户注册请求对象，包含用户注册所需的信息
     * @return 用户ID，表示注册成功的用户
     */
    long userRegister(UserAccountRegisterRequest userAccountRegisterRequest);

    /**
     * 用户登录
     *
     * @param userAccountLoginRequest 用户登录请求对象，包含用户登录所需的信息
     * @param request HTTP请求对象，用于获取登录相关的信息
     * @return 登录用户的信息对象，包含用户登录后的相关数据
     */
    LoginUserVO userLogin(UserAccountLoginRequest userAccountLoginRequest, HttpServletRequest request);

    /**
     * 用户登出
     *
     * @param request HTTP请求对象，用于处理用户登出的相关操作
     * @return 登出是否成功，true表示成功，false表示失败
     */
    boolean userLogout(HttpServletRequest request);

    /**
     * 获取当前登录的用户信息
     *
     * @param request HTTP请求对象，用于获取当前登录用户的相关信息
     * @return 当前登录用户的的信息对象，如果未登录则返回null
     */
    LoginUserVO getLoginUser(HttpServletRequest request);

    /**
     * 获取查询条件
     *
     * @param userPageQueryRequest 用户分页查询请求对象，包含查询所需的条件和参数
     * @return 查询条件对象，用于构建用户查询的SQL语句
     */
    QueryWrapper<User> getQueryWrapper(UserPageQueryRequest userPageQueryRequest);


}
